package org.web.accesscontrollist.sdk.biz;

import org.web.accesscontrollist.sdk.dto.AclResourceDetailDTO;
import org.web.accesscontrollist.sdk.dto.SaveAclResourceDetailBatchDTO;
import org.web.accesscontrollist.sdk.dto.query.QueryAclUserResourceBindingRequest;
import org.web.base.domain.ResultDO;

import java.util.List;

public interface AclResourceDetailBiz {

    /**
     * 保存 ACL 资源细节信息批量操作
     *
     * @param saveAclResourceDetailBatchDTO 封装了需要保存的 ACL 资源细节信息的请求对象.
     * @return resultDO 包含保存结果的结果对象.
     */
    ResultDO<List<AclResourceDetailDTO>> saveAclResourceDetailBatch(SaveAclResourceDetailBatchDTO saveAclResourceDetailBatchDTO);

    /**
     * 根据查询条件获取 ACL 资源细节信息列表.
     *
     * @param queryAclUserResourceBindingRequest 封装了查询条件的请求对象.
     * @return resultDO 包含 ACL 资源细节信息列表的结果对象.
     */
    ResultDO<List<AclResourceDetailDTO>> selectAclResourceDetailList(QueryAclUserResourceBindingRequest queryAclUserResourceBindingRequest);

    /**
     * 根据查询条件获取不重复的 ACL 资源细节信息.
     *
     * @param queryAclUserResourceBindingRequest 封装了查询条件的请求对象.
     * @return resultDO 包含不重复的 ACL 资源细节信息列表的结果对象.
     */
    ResultDO<List<String>> selectDistinctAclResourceDetail(QueryAclUserResourceBindingRequest queryAclUserResourceBindingRequest);
}

